package common.model.Entity.courseEntity;

import common.model.Entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;

/**
 * 表示课程上课地点的实体类。
 * <p>
 * 包含建筑名称和教室号，并提供从字符串解析为 CourseLocation 对象的工具方法。
 * </p>
 */
@Setter
@Getter
public class CourseLocation extends BaseEntity {
    /** 建筑名称 */
    private String building;

    /** 教室号 */
    private String roomNumber;

    /** 无参构造函数 */
    public CourseLocation(){}

    /**
     * 构造函数，指定建筑和教室号
     * @param building 建筑名称
     * @param roomNumber 教室号
     */
    public CourseLocation(String building, String roomNumber) {
        this.building = building;
        this.roomNumber = roomNumber;
    }

    /**
     * 构造函数，指定ID、建筑和教室号
     * @param id 数据库ID
     * @param building 建筑名称
     * @param roomNumber 教室号
     */
    public CourseLocation(Long id, String building, String roomNumber) {
        super(id);
        this.building = building;
        this.roomNumber = roomNumber;
    }

    /**
     * 返回课程地点的字符串表示，格式为 "building roomNumber"
     * @return 字符串表示的课程地点
     */
    @Override
    public String toString(){
        return building + " " + roomNumber;
    }

    /**
     * 将字符串解析为 CourseLocation 对象
     * @param courseLocation 字符串表示的课程地点，格式应为 "building roomNumber"
     * @return 对应的 CourseLocation 对象
     */
    public static CourseLocation toLocation(String courseLocation){
        String[] ret = courseLocation.split(" ");
        CourseLocation location = new CourseLocation();
        location.roomNumber = ret[1];
        location.building = ret[0];
        return location;
    }
}
